#include <unistd.h>
#include <stdio.h>
#include <signal.h>

void FunIntHandler( int iSignalNo )
{
    printf( "Signal# %d received\n", iSignalNo );
}

int main(int argc, char const *argv[])
{
    signal( SIGINT, FunIntHandler );

    printf( "Before pause()\n" );

    pause();

    printf( "After  pause()\n" );

    return 0;
}



#if 0
int main(int argc, char const *argv[])
{
    printf( " Before pause()\n" );

    pause();

    printf( " After  pause()\n" );

    return 0;
}
#endif


/*
程序功能:
    测试pause函数功能
    pause函数被调用时, 将所在进程暂停, 此时任何发送给此进程的信号都将唤醒进程.

涉及函数:
    signal
    pause

程序流程:
    signal 等待 SIGINT (Ctrl + c) 信号
    pause 使进程挂起
    如果外部向进程发送 Ctrl + c 信号 , 进入 SIGINT 处理函数
    如果外部向进程发送 任意其他信号, 进程唤醒, 执行所接收到的信号的默认处理.

知识要点:

测试过程:
    bash输入: 
        ps -aux | grep a.out
    bash输出:  //获取进程号
        linux@ubuntu:~/PuteCode/LinuxProgram$ ps -aux | grep a.out
        linux    26934  0.0  0.0   4512   804 pts/1    S+   16:19   0:00 ./a.out
        (其中 26934 为 a.out 的进程号 )
    
    如果此时bash输入: 
        kill -2 26934
    bash输出: 
        执行 FunIntHandler, 然后进程结束

    如果此时bash输入:
        kill -3 26934
        进程直接退出
  
*/